// import com.alibaba.druid.sql.ast.*;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;
#pragma once
#include "../SQLStatementImpl.h"
#include "../SQLReplaceable.h"
#include "SQLShowStatement.h"

class SQLShowQueryTaskStatement 
: virtual public SQLStatementImpl, 
virtual public SQLShowStatement, 
virtual public SQLReplaceable
{
public:
  BOOL_ptr full;
  SQLExpr_ptr where;
  SQLOrderBy_ptr orderBy;
  SQLLimit_ptr limit;
  SQLExpr_ptr user;

  SQLShowQueryTaskStatement();
  SHAREDOBJECT(SQLShowQueryTaskStatement);

  // @Override
  void accept0(SQLASTVisitor_ptr visitor);

  SQLExpr_ptr getWhere();

  void setWhere(SQLExpr_ptr x);

  SQLExpr_ptr getUser();

  SQLExpr_ptr getFor();

  void setUser(SQLExpr_ptr user);

  SQLOrderBy_ptr getOrderBy();

  void setOrderBy(SQLOrderBy_ptr x);

  SQLLimit_ptr getLimit();

  void setLimit(SQLLimit_ptr x);

  // @Override
  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);

  BOOL_ptr isFull();

  void setFull(BOOL_ptr full);
};
